package br.com.dao;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;

import br.com.beans.Especialidade;


/**
 * Classe de manipulacao de objetos persistidos via JPA
 * Objetos da classe bean Especialidade
 */
public class EspecialidadeDAO extends GenericDAO<Especialidade> {

	/**
	 * Localiza uma especialidade persistida pela descricao
	 * @param descricao Descricao da especialidade
	 * @return Objeto persistido
	 */
	public Especialidade localizar(String descricao) {

		EntityManager em = factory.createEntityManager();
		EntityTransaction t = em.getTransaction();
		Especialidade obj = null;

		try {

			t.begin();
			Query query = em.createQuery("from Especialidade where descricao like :descricao");
			query.setParameter("descricao", descricao);
			obj = (Especialidade) query.getSingleResult();
			t.commit();

		} catch (Exception e) {

			if (debugInfo) {
				e.printStackTrace();
			}
			if (t.isActive()) t.rollback();

		} finally {

			em.close();
		}

		return obj;
	}

	/**
	 * Insere (persiste) uma especialidade 
	 * @param obj Especialidade a ser persistida
	 * @return True se bem sucedido, false se houve erro.
	 */
	@Override
	public boolean inserir(Especialidade obj) {
		
		Especialidade especialidade = null;
		
		if (obj != null) {
			especialidade =	localizar(obj.getDescricao());
		}
			
		return (especialidade == null) ? super.inserir(obj) : true;
	}
	
}
